/**
 * 高阶组件：使用装饰器模式来为组件本身来增强功能
 * 1、withRouter:作用就是给类组件或者函数组件如果使用withRouter后，组件就拥有了路由的功能
 * 2、connect：作用就连接redux和组件，能让组件直接访问redux的内容
 * 组件本身的功能:使用state或者props来进行页面的渲染的
 * 装饰器设计模式的前提就是不要改变原有代码功能，而是在原有代码功能的基础上做了一层增强而已
 * 
 * 装饰器的分类
 * 1、类装饰器
 * 2、方法装饰器（较多）
 * 3、属性装饰器
 * 4、参数装饰器
 */
const withRouter=(target:Function)=>{
    target.prototype.navigate=()=>{
        console.log('我可以组件的跳转');   
    }
    target.prototype.searchParams=()=>{
        console.log('我可以进行路由传参');
    }
}
@withRouter
class ClassComponent{
    render(){
        console.log('我能渲染数据到页面上'); 
    }
}
let cc=new ClassComponent()
cc.render();
(cc as any).navigate()

